package IO.FileInputStream;

import java.io.FileInputStream;

/*
* 读取的三种方法：
* 1、int read()
* 读取一个字节，返回一个int值，如果返回-1，则表示读取完毕
* 2、int read(byte[] bs)
* 读取字节数组，返回读取的字节数，如果返回-1，则表示读取完毕
* 3、int read(byte[] bs,int off,int len)
* 读取字节数组，返回读取的字节数，如果返回-1，则表示读取完毕
*
* */
public class Demo2 {
    public static void main(String[] args) throws Exception{
        //1、创建FileInputStream对象
        FileInputStream fis1 = new FileInputStream("Day05/src/IO/FileInputStream/wordsEnglish");

        //2、读取
        //利用int read()+循环 读取
        int readData = 0;//表示读取到的数据，不使用第三方变量，直接使用read方法的话，字符会丢失
        //循环结束的条件：readData = -1
        while((readData = fis1.read()) != -1){
            System.out.print((char)readData);//abc123_++
        }
        fis1.close();
        System.out.println(" ");
        System.out.println("-----------------");

        //使用数组读取
        FileInputStream fis2 = new FileInputStream("Day05/src/IO/FileInputStream/wordsEnglish");
        byte[] bs = new byte[2];
        int len;
        while((len = fis2.read(bs)) != -1){
            String s = new String(bs,0,len);
            System.out.print(s);
        }
        fis2.close();
        System.out.println(" ");
        System.out.println("===================");

        //使用一次性读取所有字节
        FileInputStream fis3 = new FileInputStream("Day05/src/IO/FileInputStream/wordsEnglish");
        //使用readAllBytes()方法时，文件不易过大，否则会溢出
        byte[] bytes = fis3.readAllBytes();
        String rs = new String(bytes);
        System.out.println(rs);
        fis2.close();

        //3、释放资源

    }
}
